/*
    匿名内部类：
        1、什么是内部类？
            在类的内部又定义了一个新的类
        2、内部类的分类：
            静态内部类：类似于静态变量
            实例内部类：类似于实例变量
            局部内部类：类似于局部变量
        3、使用内部类代码可读性差，别用
        4、匿名内部类是局部内部类的一种
 */

public class AnonymousInnerClass {
    public static void main(String[] args) {
        MyMath m = new MyMath();
        m.mysum(new ComputeImp1(),100,200);

        //引出匿名内部类
        MyMath m2 = new MyMath();
        m2.mysum(new Compute() {                  //Compute是个接口，不能new对象的，但是在后面加上{}，然后写上方法，相当于实现，相当于下文写的class ComputeImp1 implements Compute{} ，一样的效果
            public int sum(int a, int b) {
                return a + b;
            }
        },200,200);
    }
}

interface Compute{
    int sum(int a , int b);
}

//实现接口
class ComputeImp1 implements Compute{
    public int sum(int a, int b) {
        return a + b;
    }
}

class MyMath{
    public void mysum(Compute c , int x , int y){
        int value = c.sum(x,y);
        System.out.println(value);
    }
}